天翼云客户端加密模块 接口文档

概述

客户端加密模块SDK是一个用于数据加密、解密和签名验证的 Java 库,支持多种加密算法和密钥管理策略。SDK提供了简单易用的 API,帮助开发者快速实现数据的安全加密、解密和签名验证操作。

安装与配置

1. 依赖库部署

使用SDK前需将 C 依赖库放入相应的路径下,否则无法调用相关功能。

Linux 环境

将文件夹 lib 中对应版本的 xxx.so 放置对应目录下:

  • 64位系统:库文件放入 /lib64 目录下
  • 32位系统:库文件放入 /usr/lib 目录下

Windows 环境

将文件夹 lib 中对应的版本的 xxx.dll 放置对应目录下:

  • 64位系统:DLL 文件存放在 C:\Windows\System32 目录或者 jar 包同级目录下
  • 32位系统:DLL 文件存放在 C:\Windows\SysWOW64 目录或者 jar 包同级目录下

2. Java 的 jar 包集成

应用系统新增依赖配置

# 安装加密软模块sdk包
mvn install:install-file -Dfile=lib/TASSLAPI-v1.5.2-20251215.1.jar   -DgroupId=org.tasslsdk -DartifactId=tassl -Dversion=1.5.2 -Dpackaging=jar
# 安装kms终端节点sdk
mvn install:install-file -Dfile=lib/ctyun_kms_sdk_java.jar -DgroupId=org.kmssdk -DartifactId=ctyun_kms_sdk_java -Dversion=1.2.1.1 -Dpackaging=jar

添加依赖

<dependency>
    <groupId>org.tasslsdk</groupId>
    <artifactId>tassl</artifactId>
    <version>1.5.2</version>
</dependency>

其他依赖jar包信息:

  • annotations-13.0.jar
  • hutool-all-5.8.5.jar
  • kotlin-stdlib-1.4.0.jar
  • okhttp-4.9.0.jar
  • okio-2.8.0.jar

3. 权限说明

注意:软模块初始化需要 root 权限,获取失败程序结束

核心类与方法

KmsSecurityManager

用于激活软模块并创建激活文件。

主要方法

  • public static KmsSecurityManager getInstance(String license, String keyFilePath):激活软模块并创建激活文件,返回初始化的对象。

TasslApi

TASSL 接口的核心类,提供了加密、解密和签名验证的主要功能。

主要方法

  • public static synchronized TasslApi getInstance(String ak, String sk, String ipport, String keyFilePath):初始化 TASSL 接口,加载天翼云的 KMS 库,随机生成 SM2 密钥对。
  • public String getSymmetricKey(String CmkUuid, String alg):上传 SM2 公钥,获取 KMS 产生的对称密钥。
  • public byte[] symmetricEncryption(String keyCipher, String keyAlg, byte[] iv, byte[] inData):对称密钥加密数据。
  • public byte[] symmetricDecryption(String keyCipher, String keyAlg, byte[] iv, byte[] inData):对称密钥解密数据。
  • public void symmetricEncryptionFile(String keyCipher, String keyAlg, byte[] iv, String inFilePath, String outFilePath):对称密钥文件加密。
  • public void symmetricDecryptionFile(String keyCipher, String keyAlg, byte[] iv, String inFilePath, String outFilePath):对称密钥文件解密。
  • public ArrayList<byte[]> SM4GCMEncrypt(String keyCipher, byte[] inData, byte[] iv):SM4-GCM 加密。
  • public byte[] SM4GCMDecrypt(String keyCipher, byte[] inData, byte[] tag, byte[] iv):SM4-GCM 解密。
  • public void SM4GCMEncryptFile(String keyCipher, byte[] iv, String inFilePath, String outFilePath):SM4-GCM 文件加密。
  • public void SM4GCMDecryptFile(String keyCipher, byte[] iv, String inFilePath, String outFilePath):SM4-GCM 文件解密。
  • public byte[] generateHMACSM3(String keyCipher, byte[] inData):SM3-HMAC 计算。
  • public boolean verifySM2Signature(byte[] SM2Cert, String signature, byte[] inData):SM2 验签。

支持的功能说明

1. 联网激活

  • 功能介绍:激活软模块并创建激活文件;激活目录要求有写入权限
  • 返回:初始化的对象
  • 抛出:Exception
  • 请求参数
    名称类型描述
    licenseString软模块激活码
    keyFilePathString激活文件存储目录

2. 初始化

  • 功能介绍:初始化 TASSL 接口,加载天翼云的 KMS 库,随机生成 SM2 密钥对
  • 返回:初始化的对象
  • 抛出:Exception
  • 请求参数
    名称类型描述
    akString鉴权的 AK
    skString鉴权的 SK
    ipportStringKMS 的 ip 和端口
    keyFilePathString保存密钥文件的路径

3. 产生数据密钥

  • 功能介绍:上传 SM2 公钥,获取 KMS 产生的对称密钥
  • 返回:主密钥加密的密文
  • 抛出:Exception
  • 请求参数
    名称类型描述
    CmkUuidString主密钥的 UID
    algString需要产生的密钥算法:取值 AES_128、AES_256、Ctyun_SM4

4. 对称密钥加密

  • 功能介绍:对称密钥加密数据
  • 返回:加密后的密文
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    keyAlgString加密算法,支持:AES_128/ECB/PKCS5Padding、AES_256/ECB/PKCS5Padding、AES_128/ECB/NoPadding、AES_256/ECB/NoPadding、AES_128/CBC/PKCS5Padding、AES_256/CBC/PKCS5Padding、AES_128/CBC/NoPadding、AES_256/CBC/NoPadding、Ctyun_SM4/ECB/PKCS5Padding、Ctyun_SM4/CBC/PKCS5Padding、Ctyun_SM4/ECB/NoPadding、Ctyun_SM4/CBC/NoPadding
    ivbyte[]非 ECB 模式的初始向量
    inDatabyte[]待加密的数据

5. 对称密钥解密

  • 功能介绍:对称密钥解密数据
  • 返回:明文数据
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    keyAlgString加密算法,支持:AES_128/ECB/PKCS5Padding、AES_256/ECB/PKCS5Padding、AES_128/ECB/NoPadding、AES_256/ECB/NoPadding、AES_128/CBC/PKCS5Padding、AES_256/CBC/PKCS5Padding、AES_128/CBC/NoPadding、AES_256/CBC/NoPadding、Ctyun_SM4/ECB/PKCS5Padding、Ctyun_SM4/CBC/PKCS5Padding、Ctyun_SM4/ECB/NoPadding、Ctyun_SM4/CBC/NoPadding
    ivbyte[]非 ECB 模式的初始向量
    inDatabyte[]待解密的数据

6. 对称密钥文件加密

  • 功能介绍:文件加密
  • 返回:加密后的密文文件
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    keyAlgString加密算法,支持:AES_128/ECB/PKCS5Padding、AES_256/ECB/PKCS5Padding、AES_128/ECB/NoPadding、AES_256/ECB/NoPadding、AES_128/CBC/PKCS5Padding、AES_256/CBC/PKCS5Padding、AES_128/CBC/NoPadding、AES_256/CBC/NoPadding、Ctyun_SM4/ECB/PKCS5Padding、Ctyun_SM4/CBC/PKCS5Padding、Ctyun_SM4/ECB/NoPadding、Ctyun_SM4/CBC/NoPadding
    ivbyte[]非 ECB 模式的初始向量
    inFilePathString文件输入地址
    outFilePathString文件输出地址

7. 对称密钥文件解密

  • 功能介绍:文件解密
  • 返回:解密后的明文文件
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    keyAlgString加密算法,支持:AES_128/ECB/PKCS5Padding、AES_256/ECB/PKCS5Padding、AES_128/ECB/NoPadding、AES_256/ECB/NoPadding、AES_128/CBC/PKCS5Padding、AES_256/CBC/PKCS5Padding、AES_128/CBC/NoPadding、AES_256/CBC/NoPadding、Ctyun_SM4/ECB/PKCS5Padding、Ctyun_SM4/CBC/PKCS5Padding、Ctyun_SM4/ECB/NoPadding、Ctyun_SM4/CBC/NoPadding
    ivbyte[]非 ECB 模式的初始向量
    inFilePathString文件输入地址
    outFilePathString文件输出地址

8. SM4-GCM 加密

  • 功能介绍:SM4-GCM 加密
  • 返回:索引 0 - 加密后的密文,索引 1 - 密文的 tag
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    inDatabyte[]待加密的数据
    ivbyte[]初始向量

9. SM4-GCM 解密

  • 功能介绍:SM4-GCM 解密
  • 返回:解密后的明文
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    inDatabyte[]待解密的数据
    tagbyte[]GCM 算法的 tag
    ivbyte[]初始向量

10. SM4-GCM 文件加密

  • 功能介绍:SM4-GCM 文件加密
  • 返回:无
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    ivbyte[]初始向量
    inFilePathString文件输入地址
    outFilePathString文件输出地址

11. SM4-GCM 文件解密

  • 功能介绍:SM4-GCM 文件解密
  • 返回:无
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    ivbyte[]初始向量
    inFilePathString文件输入地址
    outFilePathString文件输出地址

12. SM3-HMAC 计算

  • 功能介绍:数据 SM3-计算 HMAC
  • 返回:HMAC
  • 抛出:Exception
  • 请求参数
    名称类型描述
    keyCipherString加密密钥
    inDatabyte[]待计算的数据

13. SM2 验签

  • 功能介绍:SM2 验签
  • 返回:验签的结果
  • 抛出:Exception
  • 请求参数
    名称类型描述
    SM2Certbyte[]SM2 公钥证书
    signatureStringSM2 签名值(Base64)
    inDatabyte[]签名的源数据

使用示例

1. 联网激活示例

import com.tassl.api.KmsSecurityManager;

public class ActivationExample {
    public static void main(String[] args) {
        String license = "your_license_key";
        String keyFilePath = "/path/to/key/file";
        KmsSecurityManager manager = KmsSecurityManager.getInstance(license, keyFilePath);
        if (KmsSecurityManager.getGlobalFlag()){
            System.out.println("激活成功");
        }
    }
}

2. 初始化示例

import com.tassl.api.TasslApi;

public class InitializationExample {
    public static void main(String[] args) {
        try {
            // 初始化 TASSL 接口
            String ak = "your_ak";
            String sk = "your_sk";
            String ipport = "kms_ip:port";
            String keyFilePath = "/path/to/key/file";
            TasslApi tasslApi = TasslApi.getInstance(ak, sk, ipport, keyFilePath);
            System.out.println("初始化成功:" + tasslApi);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("初始化失败");
        }
    }
}

3. 对称密钥加密和解密示例

import com.tassl.api.TasslApi;
import java.util.Base64;

public class SymmetricEncryptionExample {
    public static void main(String[] args) {
        try {
            String ak = "your_ak";
            String sk = "your_sk";
            String ipport = "kms_ip:port";
            String keyFilePath = "/path/to/key/file";
            // 初始化 TASSL 接口
            TasslApi tasslApi = TasslApi.getInstance(ak, sk, ipport, keyFilePath);
            
            // 产生数据密钥
            String cmkUuid = "your_cmk_uuid";
            String alg = "AES_256";
            String keyCipher = tasslApi.getSymmetricKey(cmkUuid, alg);
            System.out.println("数据密钥:" + keyCipher);
            
            // 加密数据
            String keyAlg = "AES_128/CBC/PKCS5Padding";
            byte[] iv = new byte[16]; // 16字节初始向量
            byte[] inData = "Hello, World!".getBytes();
            byte[] encryptedData = tasslApi.symmetricEncryption(keyCipher, "AES_256/ECB/PKCS5Padding", iv, inData);
            System.out.println("加密结果:" + Base64.getEncoder().encodeToString(encryptedData));
            
            // 解密数据
            byte[] decryptedData = tasslApi.symmetricDecryption(keyCipher, "AES_256/ECB/PKCS5Padding", iv, encryptedData);
            System.out.println("解密结果:" + new String(decryptedData));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

异常处理

接口中的方法可能会抛出 Exception 异常,建议在使用时进行捕获和处理。

try {
    // TASSL 接口操作
} catch (Exception e) {
    e.printStackTrace();
    // 处理异常
}

注意事项

  1. 确保依赖库文件正确部署到指定目录,否则无法调用相关功能。
  2. 软模块初始化需要 root 权限,获取失败程序结束。
  3. 激活目录和文件读写路径需要保证有写入权限。
  4. 使用 NoPadding 模式时,需要保证待加密的数据是密钥分组算法的整数倍(AES 密钥分组为 16 字节)。
  5. 确保 AK、SK 和 KMS 服务地址配置正确,否则无法正常访问 KMS 服务。

支持与反馈

如有任何问题或建议,请联系技术支持团队。


通过以上文档,您可以快速上手使用客户端加密模块,实现数据的安全加密、解密和签名验证操作。

%23%20%E5%A4%A9%E7%BF%BC%E4%BA%91%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8A%A0%E5%AF%86%E6%A8%A1%E5%9D%97%20%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3%0A%0A%23%23%20%E6%A6%82%E8%BF%B0%0A%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8A%A0%E5%AF%86%E6%A8%A1%E5%9D%97SDK%E6%98%AF%E4%B8%80%E4%B8%AA%E7%94%A8%E4%BA%8E%E6%95%B0%E6%8D%AE%E5%8A%A0%E5%AF%86%E3%80%81%E8%A7%A3%E5%AF%86%E5%92%8C%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E7%9A%84%20Java%20%E5%BA%93%EF%BC%8C%E6%94%AF%E6%8C%81%E5%A4%9A%E7%A7%8D%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E5%92%8C%E5%AF%86%E9%92%A5%E7%AE%A1%E7%90%86%E7%AD%96%E7%95%A5%E3%80%82SDK%E6%8F%90%E4%BE%9B%E4%BA%86%E7%AE%80%E5%8D%95%E6%98%93%E7%94%A8%E7%9A%84%20API%EF%BC%8C%E5%B8%AE%E5%8A%A9%E5%BC%80%E5%8F%91%E8%80%85%E5%BF%AB%E9%80%9F%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%9A%84%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86%E3%80%81%E8%A7%A3%E5%AF%86%E5%92%8C%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E6%93%8D%E4%BD%9C%E3%80%82%0A%0A%23%23%20%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE%0A%0A%23%23%23%201.%20%E4%BE%9D%E8%B5%96%E5%BA%93%E9%83%A8%E7%BD%B2%0A%E4%BD%BF%E7%94%A8SDK%E5%89%8D%E9%9C%80%E5%B0%86%20C%20%E4%BE%9D%E8%B5%96%E5%BA%93%E6%94%BE%E5%85%A5%E7%9B%B8%E5%BA%94%E7%9A%84%E8%B7%AF%E5%BE%84%E4%B8%8B%EF%BC%8C%E5%90%A6%E5%88%99%E6%97%A0%E6%B3%95%E8%B0%83%E7%94%A8%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD%E3%80%82%0A%0A%23%23%23%23%20Linux%20%E7%8E%AF%E5%A2%83%0A%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%20lib%20%E4%B8%AD%E5%AF%B9%E5%BA%94%E7%89%88%E6%9C%AC%E7%9A%84%20xxx.so%20%E6%94%BE%E7%BD%AE%E5%AF%B9%E5%BA%94%E7%9B%AE%E5%BD%95%E4%B8%8B%EF%BC%9A%0A-%2064%E4%BD%8D%E7%B3%BB%E7%BB%9F%EF%BC%9A%E5%BA%93%E6%96%87%E4%BB%B6%E6%94%BE%E5%85%A5%20%60%2Flib64%60%20%E7%9B%AE%E5%BD%95%E4%B8%8B%0A-%2032%E4%BD%8D%E7%B3%BB%E7%BB%9F%EF%BC%9A%E5%BA%93%E6%96%87%E4%BB%B6%E6%94%BE%E5%85%A5%20%60%2Fusr%2Flib%60%20%E7%9B%AE%E5%BD%95%E4%B8%8B%0A%0A%23%23%23%23%20Windows%20%E7%8E%AF%E5%A2%83%0A%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%20lib%20%E4%B8%AD%E5%AF%B9%E5%BA%94%E7%9A%84%E7%89%88%E6%9C%AC%E7%9A%84%20xxx.dll%20%E6%94%BE%E7%BD%AE%E5%AF%B9%E5%BA%94%E7%9B%AE%E5%BD%95%E4%B8%8B%EF%BC%9A%0A-%2064%E4%BD%8D%E7%B3%BB%E7%BB%9F%EF%BC%9ADLL%20%E6%96%87%E4%BB%B6%E5%AD%98%E6%94%BE%E5%9C%A8%20%60C%3A%5CWindows%5CSystem32%60%20%E7%9B%AE%E5%BD%95%E6%88%96%E8%80%85%20jar%20%E5%8C%85%E5%90%8C%E7%BA%A7%E7%9B%AE%E5%BD%95%E4%B8%8B%0A-%2032%E4%BD%8D%E7%B3%BB%E7%BB%9F%EF%BC%9ADLL%20%E6%96%87%E4%BB%B6%E5%AD%98%E6%94%BE%E5%9C%A8%20%60C%3A%5CWindows%5CSysWOW64%60%20%E7%9B%AE%E5%BD%95%E6%88%96%E8%80%85%20jar%20%E5%8C%85%E5%90%8C%E7%BA%A7%E7%9B%AE%E5%BD%95%E4%B8%8B%0A%0A%23%23%23%202.%20Java%20%E7%9A%84%20jar%20%E5%8C%85%E9%9B%86%E6%88%90%0A%23%23%23%23%20%E5%BA%94%E7%94%A8%E7%B3%BB%E7%BB%9F%E6%96%B0%E5%A2%9E%E4%BE%9D%E8%B5%96%E9%85%8D%E7%BD%AE%0A%0A%60%60%60shell%0A%23%20%E5%AE%89%E8%A3%85%E5%8A%A0%E5%AF%86%E8%BD%AF%E6%A8%A1%E5%9D%97sdk%E5%8C%85%0Amvn%20install%3Ainstall-file%20-Dfile%3Dlib%2FTASSLAPI-v1.5.2-20251215.1.jar%20%20%20-DgroupId%3Dorg.tasslsdk%20-DartifactId%3Dtassl%20-Dversion%3D1.5.2%20-Dpackaging%3Djar%0A%23%20%E5%AE%89%E8%A3%85kms%E7%BB%88%E7%AB%AF%E8%8A%82%E7%82%B9sdk%0Amvn%20install%3Ainstall-file%20-Dfile%3Dlib%2Fctyun_kms_sdk_java.jar%20-DgroupId%3Dorg.kmssdk%20-DartifactId%3Dctyun_kms_sdk_java%20-Dversion%3D1.2.1.1%20-Dpackaging%3Djar%0A%0A%60%60%60%0A%0A%23%23%23%23%20%E6%B7%BB%E5%8A%A0%E4%BE%9D%E8%B5%96%0A%60%60%60xml%0A%3Cdependency%3E%0A%20%20%20%20%3CgroupId%3Eorg.tasslsdk%3C%2FgroupId%3E%0A%20%20%20%20%3CartifactId%3Etassl%3C%2FartifactId%3E%0A%20%20%20%20%3Cversion%3E1.5.2%3C%2Fversion%3E%0A%3C%2Fdependency%3E%0A%60%60%60%0A%23%23%23%23%20%E5%85%B6%E4%BB%96%E4%BE%9D%E8%B5%96jar%E5%8C%85%E4%BF%A1%E6%81%AF%EF%BC%9A%0A-%20annotations-13.0.jar%0A-%20hutool-all-5.8.5.jar%0A-%20kotlin-stdlib-1.4.0.jar%0A-%20okhttp-4.9.0.jar%0A-%20okio-2.8.0.jar%0A%0A%23%23%23%203.%20%E6%9D%83%E9%99%90%E8%AF%B4%E6%98%8E%0A%E6%B3%A8%E6%84%8F%EF%BC%9A%E8%BD%AF%E6%A8%A1%E5%9D%97%E5%88%9D%E5%A7%8B%E5%8C%96%E9%9C%80%E8%A6%81%20root%20%E6%9D%83%E9%99%90%EF%BC%8C%E8%8E%B7%E5%8F%96%E5%A4%B1%E8%B4%A5%E7%A8%8B%E5%BA%8F%E7%BB%93%E6%9D%9F%0A%0A%23%23%20%E6%A0%B8%E5%BF%83%E7%B1%BB%E4%B8%8E%E6%96%B9%E6%B3%95%0A%0A%23%23%23%20%60KmsSecurityManager%60%20%E7%B1%BB%0A%E7%94%A8%E4%BA%8E%E6%BF%80%E6%B4%BB%E8%BD%AF%E6%A8%A1%E5%9D%97%E5%B9%B6%E5%88%9B%E5%BB%BA%E6%BF%80%E6%B4%BB%E6%96%87%E4%BB%B6%E3%80%82%0A%0A%23%23%23%23%20%E4%B8%BB%E8%A6%81%E6%96%B9%E6%B3%95%0A-%20%60public%20static%20KmsSecurityManager%20getInstance(String%20license%2C%20String%20keyFilePath)%60%EF%BC%9A%E6%BF%80%E6%B4%BB%E8%BD%AF%E6%A8%A1%E5%9D%97%E5%B9%B6%E5%88%9B%E5%BB%BA%E6%BF%80%E6%B4%BB%E6%96%87%E4%BB%B6%EF%BC%8C%E8%BF%94%E5%9B%9E%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E5%AF%B9%E8%B1%A1%E3%80%82%0A%0A%23%23%23%20%60TasslApi%60%20%E7%B1%BB%0ATASSL%20%E6%8E%A5%E5%8F%A3%E7%9A%84%E6%A0%B8%E5%BF%83%E7%B1%BB%EF%BC%8C%E6%8F%90%E4%BE%9B%E4%BA%86%E5%8A%A0%E5%AF%86%E3%80%81%E8%A7%A3%E5%AF%86%E5%92%8C%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD%E3%80%82%0A%0A%23%23%23%23%20%E4%B8%BB%E8%A6%81%E6%96%B9%E6%B3%95%0A-%20%20%60public%20static%20synchronized%20TasslApi%20getInstance(String%20ak%2C%20String%20sk%2C%20String%20ipport%2C%20String%20keyFilePath)%60%EF%BC%9A%E5%88%9D%E5%A7%8B%E5%8C%96%20TASSL%20%E6%8E%A5%E5%8F%A3%EF%BC%8C%E5%8A%A0%E8%BD%BD%E5%A4%A9%E7%BF%BC%E4%BA%91%E7%9A%84%20KMS%20%E5%BA%93%EF%BC%8C%E9%9A%8F%E6%9C%BA%E7%94%9F%E6%88%90%20SM2%20%E5%AF%86%E9%92%A5%E5%AF%B9%E3%80%82%0A-%20%20%60public%20String%20getSymmetricKey(String%20CmkUuid%2C%20String%20alg)%60%EF%BC%9A%E4%B8%8A%E4%BC%A0%20SM2%20%E5%85%AC%E9%92%A5%EF%BC%8C%E8%8E%B7%E5%8F%96%20KMS%20%E4%BA%A7%E7%94%9F%E7%9A%84%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E3%80%82%0A-%20%20%60public%20byte%5B%5D%20symmetricEncryption(String%20keyCipher%2C%20String%20keyAlg%2C%20byte%5B%5D%20iv%2C%20byte%5B%5D%20inData)%60%EF%BC%9A%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E3%80%82%0A-%20%20%60public%20byte%5B%5D%20symmetricDecryption(String%20keyCipher%2C%20String%20keyAlg%2C%20byte%5B%5D%20iv%2C%20byte%5B%5D%20inData)%60%EF%BC%9A%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E8%A7%A3%E5%AF%86%E6%95%B0%E6%8D%AE%E3%80%82%0A-%20%20%60public%20void%20symmetricEncryptionFile(String%20keyCipher%2C%20String%20keyAlg%2C%20byte%5B%5D%20iv%2C%20String%20inFilePath%2C%20String%20outFilePath)%60%EF%BC%9A%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E5%8A%A0%E5%AF%86%E3%80%82%0A-%20%20%60public%20void%20symmetricDecryptionFile(String%20keyCipher%2C%20String%20keyAlg%2C%20byte%5B%5D%20iv%2C%20String%20inFilePath%2C%20String%20outFilePath)%60%EF%BC%9A%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E8%A7%A3%E5%AF%86%E3%80%82%0A-%20%20%60public%20ArrayList%3Cbyte%5B%5D%3E%20SM4GCMEncrypt(String%20keyCipher%2C%20byte%5B%5D%20inData%2C%20byte%5B%5D%20iv)%60%EF%BC%9ASM4-GCM%20%E5%8A%A0%E5%AF%86%E3%80%82%0A-%20%20%60public%20byte%5B%5D%20SM4GCMDecrypt(String%20keyCipher%2C%20byte%5B%5D%20inData%2C%20byte%5B%5D%20tag%2C%20byte%5B%5D%20iv)%60%EF%BC%9ASM4-GCM%20%E8%A7%A3%E5%AF%86%E3%80%82%0A-%20%20%60public%20void%20SM4GCMEncryptFile(String%20keyCipher%2C%20byte%5B%5D%20iv%2C%20String%20inFilePath%2C%20String%20outFilePath)%60%EF%BC%9ASM4-GCM%20%E6%96%87%E4%BB%B6%E5%8A%A0%E5%AF%86%E3%80%82%0A-%20%20%60public%20void%20SM4GCMDecryptFile(String%20keyCipher%2C%20byte%5B%5D%20iv%2C%20String%20inFilePath%2C%20String%20outFilePath)%60%EF%BC%9ASM4-GCM%20%E6%96%87%E4%BB%B6%E8%A7%A3%E5%AF%86%E3%80%82%0A-%20%20%60public%20byte%5B%5D%20generateHMACSM3(String%20keyCipher%2C%20byte%5B%5D%20inData)%60%EF%BC%9ASM3-HMAC%20%E8%AE%A1%E7%AE%97%E3%80%82%0A-%20%20%60public%20boolean%20verifySM2Signature(byte%5B%5D%20SM2Cert%2C%20String%20signature%2C%20byte%5B%5D%20inData)%60%EF%BC%9ASM2%20%E9%AA%8C%E7%AD%BE%E3%80%82%0A%0A%23%23%20%E6%94%AF%E6%8C%81%E7%9A%84%E5%8A%9F%E8%83%BD%E8%AF%B4%E6%98%8E%0A%0A%23%23%23%201.%20%E8%81%94%E7%BD%91%E6%BF%80%E6%B4%BB%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E6%BF%80%E6%B4%BB%E8%BD%AF%E6%A8%A1%E5%9D%97%E5%B9%B6%E5%88%9B%E5%BB%BA%E6%BF%80%E6%B4%BB%E6%96%87%E4%BB%B6%EF%BC%9B%E6%BF%80%E6%B4%BB%E7%9B%AE%E5%BD%95%E8%A6%81%E6%B1%82%E6%9C%89%E5%86%99%E5%85%A5%E6%9D%83%E9%99%90%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E5%AF%B9%E8%B1%A1%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20license%20%7C%20String%20%7C%20%E8%BD%AF%E6%A8%A1%E5%9D%97%E6%BF%80%E6%B4%BB%E7%A0%81%20%7C%0A%20%20%7C%20keyFilePath%20%7C%20String%20%7C%20%E6%BF%80%E6%B4%BB%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8%E7%9B%AE%E5%BD%95%20%7C%0A%0A%23%23%23%202.%20%E5%88%9D%E5%A7%8B%E5%8C%96%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E5%88%9D%E5%A7%8B%E5%8C%96%20TASSL%20%E6%8E%A5%E5%8F%A3%EF%BC%8C%E5%8A%A0%E8%BD%BD%E5%A4%A9%E7%BF%BC%E4%BA%91%E7%9A%84%20KMS%20%E5%BA%93%EF%BC%8C%E9%9A%8F%E6%9C%BA%E7%94%9F%E6%88%90%20SM2%20%E5%AF%86%E9%92%A5%E5%AF%B9%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E5%AF%B9%E8%B1%A1%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20ak%20%7C%20String%20%7C%20%E9%89%B4%E6%9D%83%E7%9A%84%20AK%20%7C%0A%20%20%7C%20sk%20%7C%20String%20%7C%20%E9%89%B4%E6%9D%83%E7%9A%84%20SK%20%7C%0A%20%20%7C%20ipport%20%7C%20String%20%7C%20KMS%20%E7%9A%84%20ip%20%E5%92%8C%E7%AB%AF%E5%8F%A3%20%7C%0A%20%20%7C%20keyFilePath%20%7C%20String%20%7C%20%E4%BF%9D%E5%AD%98%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E7%9A%84%E8%B7%AF%E5%BE%84%20%7C%0A%0A%23%23%23%203.%20%E4%BA%A7%E7%94%9F%E6%95%B0%E6%8D%AE%E5%AF%86%E9%92%A5%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E4%B8%8A%E4%BC%A0%20SM2%20%E5%85%AC%E9%92%A5%EF%BC%8C%E8%8E%B7%E5%8F%96%20KMS%20%E4%BA%A7%E7%94%9F%E7%9A%84%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E4%B8%BB%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86%E7%9A%84%E5%AF%86%E6%96%87%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20CmkUuid%20%7C%20String%20%7C%20%E4%B8%BB%E5%AF%86%E9%92%A5%E7%9A%84%20UID%20%7C%0A%20%20%7C%20alg%20%7C%20String%20%7C%20%E9%9C%80%E8%A6%81%E4%BA%A7%E7%94%9F%E7%9A%84%E5%AF%86%E9%92%A5%E7%AE%97%E6%B3%95%EF%BC%9A%E5%8F%96%E5%80%BC%20AES_128%E3%80%81AES_256%E3%80%81Ctyun_SM4%20%7C%0A%0A%23%23%23%204.%20%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E5%8A%A0%E5%AF%86%E5%90%8E%E7%9A%84%E5%AF%86%E6%96%87%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20keyAlg%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%EF%BC%8C%E6%94%AF%E6%8C%81%EF%BC%9AAES_128%2FECB%2FPKCS5Padding%E3%80%81AES_256%2FECB%2FPKCS5Padding%E3%80%81AES_128%2FECB%2FNoPadding%E3%80%81AES_256%2FECB%2FNoPadding%E3%80%81AES_128%2FCBC%2FPKCS5Padding%E3%80%81AES_256%2FCBC%2FPKCS5Padding%E3%80%81AES_128%2FCBC%2FNoPadding%E3%80%81AES_256%2FCBC%2FNoPadding%E3%80%81Ctyun_SM4%2FECB%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FCBC%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FECB%2FNoPadding%E3%80%81Ctyun_SM4%2FCBC%2FNoPadding%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E9%9D%9E%20ECB%20%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%20%20%7C%20inData%20%7C%20byte%5B%5D%20%7C%20%E5%BE%85%E5%8A%A0%E5%AF%86%E7%9A%84%E6%95%B0%E6%8D%AE%20%7C%0A%0A%23%23%23%205.%20%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E8%A7%A3%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E8%A7%A3%E5%AF%86%E6%95%B0%E6%8D%AE%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E6%98%8E%E6%96%87%E6%95%B0%E6%8D%AE%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20keyAlg%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%EF%BC%8C%E6%94%AF%E6%8C%81%EF%BC%9AAES_128%2FECB%2FPKCS5Padding%E3%80%81AES_256%2FECB%2FPKCS5Padding%E3%80%81AES_128%2FECB%2FNoPadding%E3%80%81AES_256%2FECB%2FNoPadding%E3%80%81AES_128%2FCBC%2FPKCS5Padding%E3%80%81AES_256%2FCBC%2FPKCS5Padding%E3%80%81AES_128%2FCBC%2FNoPadding%E3%80%81AES_256%2FCBC%2FNoPadding%E3%80%81Ctyun_SM4%2FECB%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FCBC%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FECB%2FNoPadding%E3%80%81Ctyun_SM4%2FCBC%2FNoPadding%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E9%9D%9E%20ECB%20%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%20%20%7C%20inData%20%7C%20byte%5B%5D%20%7C%20%E5%BE%85%E8%A7%A3%E5%AF%86%E7%9A%84%E6%95%B0%E6%8D%AE%20%7C%0A%0A%23%23%23%206.%20%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E5%8A%A0%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E6%96%87%E4%BB%B6%E5%8A%A0%E5%AF%86%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E5%8A%A0%E5%AF%86%E5%90%8E%E7%9A%84%E5%AF%86%E6%96%87%E6%96%87%E4%BB%B6%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20keyAlg%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%EF%BC%8C%E6%94%AF%E6%8C%81%EF%BC%9AAES_128%2FECB%2FPKCS5Padding%E3%80%81AES_256%2FECB%2FPKCS5Padding%E3%80%81AES_128%2FECB%2FNoPadding%E3%80%81AES_256%2FECB%2FNoPadding%E3%80%81AES_128%2FCBC%2FPKCS5Padding%E3%80%81AES_256%2FCBC%2FPKCS5Padding%E3%80%81AES_128%2FCBC%2FNoPadding%E3%80%81AES_256%2FCBC%2FNoPadding%E3%80%81Ctyun_SM4%2FECB%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FCBC%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FECB%2FNoPadding%E3%80%81Ctyun_SM4%2FCBC%2FNoPadding%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E9%9D%9E%20ECB%20%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%20%20%7C%20inFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%85%A5%E5%9C%B0%E5%9D%80%20%7C%0A%20%20%7C%20outFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%87%BA%E5%9C%B0%E5%9D%80%20%7C%0A%0A%23%23%23%207.%20%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E8%A7%A3%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E6%96%87%E4%BB%B6%E8%A7%A3%E5%AF%86%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E8%A7%A3%E5%AF%86%E5%90%8E%E7%9A%84%E6%98%8E%E6%96%87%E6%96%87%E4%BB%B6%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20keyAlg%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%EF%BC%8C%E6%94%AF%E6%8C%81%EF%BC%9AAES_128%2FECB%2FPKCS5Padding%E3%80%81AES_256%2FECB%2FPKCS5Padding%E3%80%81AES_128%2FECB%2FNoPadding%E3%80%81AES_256%2FECB%2FNoPadding%E3%80%81AES_128%2FCBC%2FPKCS5Padding%E3%80%81AES_256%2FCBC%2FPKCS5Padding%E3%80%81AES_128%2FCBC%2FNoPadding%E3%80%81AES_256%2FCBC%2FNoPadding%E3%80%81Ctyun_SM4%2FECB%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FCBC%2FPKCS5Padding%E3%80%81Ctyun_SM4%2FECB%2FNoPadding%E3%80%81Ctyun_SM4%2FCBC%2FNoPadding%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E9%9D%9E%20ECB%20%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%20%20%7C%20inFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%85%A5%E5%9C%B0%E5%9D%80%20%7C%0A%20%20%7C%20outFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%87%BA%E5%9C%B0%E5%9D%80%20%7C%0A%0A%23%23%23%208.%20SM4-GCM%20%E5%8A%A0%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9ASM4-GCM%20%E5%8A%A0%E5%AF%86%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E7%B4%A2%E5%BC%95%200%20-%20%E5%8A%A0%E5%AF%86%E5%90%8E%E7%9A%84%E5%AF%86%E6%96%87%EF%BC%8C%E7%B4%A2%E5%BC%95%201%20-%20%E5%AF%86%E6%96%87%E7%9A%84%20tag%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20inData%20%7C%20byte%5B%5D%20%7C%20%E5%BE%85%E5%8A%A0%E5%AF%86%E7%9A%84%E6%95%B0%E6%8D%AE%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%0A%23%23%23%209.%20SM4-GCM%20%E8%A7%A3%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9ASM4-GCM%20%E8%A7%A3%E5%AF%86%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E8%A7%A3%E5%AF%86%E5%90%8E%E7%9A%84%E6%98%8E%E6%96%87%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20inData%20%7C%20byte%5B%5D%20%7C%20%E5%BE%85%E8%A7%A3%E5%AF%86%E7%9A%84%E6%95%B0%E6%8D%AE%20%7C%0A%20%20%7C%20tag%20%7C%20byte%5B%5D%20%7C%20GCM%20%E7%AE%97%E6%B3%95%E7%9A%84%20tag%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%0A%23%23%23%2010.%20SM4-GCM%20%E6%96%87%E4%BB%B6%E5%8A%A0%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9ASM4-GCM%20%E6%96%87%E4%BB%B6%E5%8A%A0%E5%AF%86%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E6%97%A0%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%20%20%7C%20inFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%85%A5%E5%9C%B0%E5%9D%80%20%7C%0A%20%20%7C%20outFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%87%BA%E5%9C%B0%E5%9D%80%20%7C%0A%0A%23%23%23%2011.%20SM4-GCM%20%E6%96%87%E4%BB%B6%E8%A7%A3%E5%AF%86%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9ASM4-GCM%20%E6%96%87%E4%BB%B6%E8%A7%A3%E5%AF%86%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E6%97%A0%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20iv%20%7C%20byte%5B%5D%20%7C%20%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%20%7C%0A%20%20%7C%20inFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%85%A5%E5%9C%B0%E5%9D%80%20%7C%0A%20%20%7C%20outFilePath%20%7C%20String%20%7C%20%E6%96%87%E4%BB%B6%E8%BE%93%E5%87%BA%E5%9C%B0%E5%9D%80%20%7C%0A%0A%23%23%23%2012.%20SM3-HMAC%20%E8%AE%A1%E7%AE%97%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9A%E6%95%B0%E6%8D%AE%20SM3-%E8%AE%A1%E7%AE%97%20HMAC%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9AHMAC%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20keyCipher%20%7C%20String%20%7C%20%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5%20%7C%0A%20%20%7C%20inData%20%7C%20byte%5B%5D%20%7C%20%E5%BE%85%E8%AE%A1%E7%AE%97%E7%9A%84%E6%95%B0%E6%8D%AE%20%7C%0A%0A%23%23%23%2013.%20SM2%20%E9%AA%8C%E7%AD%BE%0A-%20**%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D**%EF%BC%9ASM2%20%E9%AA%8C%E7%AD%BE%0A-%20**%E8%BF%94%E5%9B%9E**%EF%BC%9A%E9%AA%8C%E7%AD%BE%E7%9A%84%E7%BB%93%E6%9E%9C%0A-%20**%E6%8A%9B%E5%87%BA**%EF%BC%9AException%0A-%20**%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0**%EF%BC%9A%0A%20%20%7C%20%E5%90%8D%E7%A7%B0%20%7C%20%E7%B1%BB%E5%9E%8B%20%7C%20%E6%8F%8F%E8%BF%B0%20%7C%0A%20%20%7C------%7C------%7C------%7C%0A%20%20%7C%20SM2Cert%20%7C%20byte%5B%5D%20%7C%20SM2%20%E5%85%AC%E9%92%A5%E8%AF%81%E4%B9%A6%20%7C%0A%20%20%7C%20signature%20%7C%20String%20%7C%20SM2%20%E7%AD%BE%E5%90%8D%E5%80%BC%EF%BC%88Base64%EF%BC%89%20%7C%0A%20%20%7C%20inData%20%7C%20byte%5B%5D%20%7C%20%E7%AD%BE%E5%90%8D%E7%9A%84%E6%BA%90%E6%95%B0%E6%8D%AE%20%7C%0A%0A%0A%23%23%20%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B%0A%0A%23%23%23%201.%20%E8%81%94%E7%BD%91%E6%BF%80%E6%B4%BB%E7%A4%BA%E4%BE%8B%0A%0A%60%60%60java%0Aimport%20com.tassl.api.KmsSecurityManager%3B%0A%0Apublic%20class%20ActivationExample%20%7B%0A%20%20%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20%20%20%20%20String%20license%20%3D%20%22your_license_key%22%3B%0A%20%20%20%20%20%20%20%20String%20keyFilePath%20%3D%20%22%2Fpath%2Fto%2Fkey%2Ffile%22%3B%0A%20%20%20%20%20%20%20%20KmsSecurityManager%20manager%20%3D%20KmsSecurityManager.getInstance(license%2C%20keyFilePath)%3B%0A%20%20%20%20%20%20%20%20if%20(KmsSecurityManager.getGlobalFlag())%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%E6%BF%80%E6%B4%BB%E6%88%90%E5%8A%9F%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%60%60%60%0A%0A%23%23%23%202.%20%E5%88%9D%E5%A7%8B%E5%8C%96%E7%A4%BA%E4%BE%8B%0A%0A%60%60%60java%0Aimport%20com.tassl.api.TasslApi%3B%0A%0Apublic%20class%20InitializationExample%20%7B%0A%20%20%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%E5%88%9D%E5%A7%8B%E5%8C%96%20TASSL%20%E6%8E%A5%E5%8F%A3%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20ak%20%3D%20%22your_ak%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20sk%20%3D%20%22your_sk%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20ipport%20%3D%20%22kms_ip%3Aport%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20keyFilePath%20%3D%20%22%2Fpath%2Fto%2Fkey%2Ffile%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20TasslApi%20tasslApi%20%3D%20TasslApi.getInstance(ak%2C%20sk%2C%20ipport%2C%20keyFilePath)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%E5%88%9D%E5%A7%8B%E5%8C%96%E6%88%90%E5%8A%9F%EF%BC%9A%22%20%2B%20tasslApi)%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20(Exception%20e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.printStackTrace()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%E5%88%9D%E5%A7%8B%E5%8C%96%E5%A4%B1%E8%B4%A5%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%60%60%60%0A%0A%23%23%23%203.%20%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86%E5%92%8C%E8%A7%A3%E5%AF%86%E7%A4%BA%E4%BE%8B%0A%0A%60%60%60java%0Aimport%20com.tassl.api.TasslApi%3B%0Aimport%20java.util.Base64%3B%0A%0Apublic%20class%20SymmetricEncryptionExample%20%7B%0A%20%20%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20ak%20%3D%20%22your_ak%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20sk%20%3D%20%22your_sk%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20ipport%20%3D%20%22kms_ip%3Aport%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20keyFilePath%20%3D%20%22%2Fpath%2Fto%2Fkey%2Ffile%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%E5%88%9D%E5%A7%8B%E5%8C%96%20TASSL%20%E6%8E%A5%E5%8F%A3%0A%20%20%20%20%20%20%20%20%20%20%20%20TasslApi%20tasslApi%20%3D%20TasslApi.getInstance(ak%2C%20sk%2C%20ipport%2C%20keyFilePath)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%E4%BA%A7%E7%94%9F%E6%95%B0%E6%8D%AE%E5%AF%86%E9%92%A5%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20cmkUuid%20%3D%20%22your_cmk_uuid%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20alg%20%3D%20%22AES_256%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20keyCipher%20%3D%20tasslApi.getSymmetricKey(cmkUuid%2C%20alg)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%E6%95%B0%E6%8D%AE%E5%AF%86%E9%92%A5%EF%BC%9A%22%20%2B%20keyCipher)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%0A%20%20%20%20%20%20%20%20%20%20%20%20String%20keyAlg%20%3D%20%22AES_128%2FCBC%2FPKCS5Padding%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20byte%5B%5D%20iv%20%3D%20new%20byte%5B16%5D%3B%20%2F%2F%2016%E5%AD%97%E8%8A%82%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F%0A%20%20%20%20%20%20%20%20%20%20%20%20byte%5B%5D%20inData%20%3D%20%22Hello%2C%20World!%22.getBytes()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20byte%5B%5D%20encryptedData%20%3D%20tasslApi.symmetricEncryption(keyCipher%2C%20%22AES_256%2FECB%2FPKCS5Padding%22%2C%20iv%2C%20inData)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%E5%8A%A0%E5%AF%86%E7%BB%93%E6%9E%9C%EF%BC%9A%22%20%2B%20Base64.getEncoder().encodeToString(encryptedData))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%E8%A7%A3%E5%AF%86%E6%95%B0%E6%8D%AE%0A%20%20%20%20%20%20%20%20%20%20%20%20byte%5B%5D%20decryptedData%20%3D%20tasslApi.symmetricDecryption(keyCipher%2C%20%22AES_256%2FECB%2FPKCS5Padding%22%2C%20iv%2C%20encryptedData)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%E8%A7%A3%E5%AF%86%E7%BB%93%E6%9E%9C%EF%BC%9A%22%20%2B%20new%20String(decryptedData))%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20(Exception%20e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.printStackTrace()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%60%60%60%0A%0A%23%23%20%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%0A%E6%8E%A5%E5%8F%A3%E4%B8%AD%E7%9A%84%E6%96%B9%E6%B3%95%E5%8F%AF%E8%83%BD%E4%BC%9A%E6%8A%9B%E5%87%BA%20%60Exception%60%20%E5%BC%82%E5%B8%B8%EF%BC%8C%E5%BB%BA%E8%AE%AE%E5%9C%A8%E4%BD%BF%E7%94%A8%E6%97%B6%E8%BF%9B%E8%A1%8C%E6%8D%95%E8%8E%B7%E5%92%8C%E5%A4%84%E7%90%86%E3%80%82%0A%0A%60%60%60java%0Atry%20%7B%0A%20%20%20%20%2F%2F%20TASSL%20%E6%8E%A5%E5%8F%A3%E6%93%8D%E4%BD%9C%0A%7D%20catch%20(Exception%20e)%20%7B%0A%20%20%20%20e.printStackTrace()%3B%0A%20%20%20%20%2F%2F%20%E5%A4%84%E7%90%86%E5%BC%82%E5%B8%B8%0A%7D%0A%60%60%60%0A%0A%23%23%20%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9%0A1.%20%E7%A1%AE%E4%BF%9D%E4%BE%9D%E8%B5%96%E5%BA%93%E6%96%87%E4%BB%B6%E6%AD%A3%E7%A1%AE%E9%83%A8%E7%BD%B2%E5%88%B0%E6%8C%87%E5%AE%9A%E7%9B%AE%E5%BD%95%EF%BC%8C%E5%90%A6%E5%88%99%E6%97%A0%E6%B3%95%E8%B0%83%E7%94%A8%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD%E3%80%82%0A2.%20%E8%BD%AF%E6%A8%A1%E5%9D%97%E5%88%9D%E5%A7%8B%E5%8C%96%E9%9C%80%E8%A6%81%20root%20%E6%9D%83%E9%99%90%EF%BC%8C%E8%8E%B7%E5%8F%96%E5%A4%B1%E8%B4%A5%E7%A8%8B%E5%BA%8F%E7%BB%93%E6%9D%9F%E3%80%82%0A3.%20%E6%BF%80%E6%B4%BB%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6%E8%AF%BB%E5%86%99%E8%B7%AF%E5%BE%84%E9%9C%80%E8%A6%81%E4%BF%9D%E8%AF%81%E6%9C%89%E5%86%99%E5%85%A5%E6%9D%83%E9%99%90%E3%80%82%0A4.%20%E4%BD%BF%E7%94%A8%20NoPadding%20%E6%A8%A1%E5%BC%8F%E6%97%B6%EF%BC%8C%E9%9C%80%E8%A6%81%E4%BF%9D%E8%AF%81%E5%BE%85%E5%8A%A0%E5%AF%86%E7%9A%84%E6%95%B0%E6%8D%AE%E6%98%AF%E5%AF%86%E9%92%A5%E5%88%86%E7%BB%84%E7%AE%97%E6%B3%95%E7%9A%84%E6%95%B4%E6%95%B0%E5%80%8D%EF%BC%88AES%20%E5%AF%86%E9%92%A5%E5%88%86%E7%BB%84%E4%B8%BA%2016%20%E5%AD%97%E8%8A%82%EF%BC%89%E3%80%82%0A5.%20%E7%A1%AE%E4%BF%9D%20AK%E3%80%81SK%20%E5%92%8C%20KMS%20%E6%9C%8D%E5%8A%A1%E5%9C%B0%E5%9D%80%E9%85%8D%E7%BD%AE%E6%AD%A3%E7%A1%AE%EF%BC%8C%E5%90%A6%E5%88%99%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E8%AE%BF%E9%97%AE%20KMS%20%E6%9C%8D%E5%8A%A1%E3%80%82%0A%0A%23%23%20%E6%94%AF%E6%8C%81%E4%B8%8E%E5%8F%8D%E9%A6%88%0A%E5%A6%82%E6%9C%89%E4%BB%BB%E4%BD%95%E9%97%AE%E9%A2%98%E6%88%96%E5%BB%BA%E8%AE%AE%EF%BC%8C%E8%AF%B7%E8%81%94%E7%B3%BB%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81%E5%9B%A2%E9%98%9F%E3%80%82%0A%0A---%0A%0A%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8A%E6%96%87%E6%A1%A3%EF%BC%8C%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%E4%BD%BF%E7%94%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8A%A0%E5%AF%86%E6%A8%A1%E5%9D%97%EF%BC%8C%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%9A%84%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86%E3%80%81%E8%A7%A3%E5%AF%86%E5%92%8C%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E6%93%8D%E4%BD%9C%E3%80%82